3分钟理解tintColor是个啥玩意

您所在的位置:网站首页 hd color是什么 3分钟理解tintColor是个啥玩意

3分钟理解tintColor是个啥玩意

2023-08-11 05:56| 来源: 网络整理| 查看: 265

我讲到小概念,喜欢用简明的语句描述清楚。今天描述一下tintColor,喜欢读长篇大论的,我在后面附了传送门。

1.所有的常用控件,都有tintColor属性。其中,UIView也有这个属性,可想而知继承UIView的控件也都有tintColor了。

2.使用场景:当父视图更改了tintColor为red,那么它所有的一级子视图tintColor全部为red,除非你主动设置过子视图的tintColor。它再往下的子视图的tintColor则遵循直接父视图的tintColor 。

3.如果没有给任何视图指定过tintColor,系统会默认给原生控件指定一个tintColor,比如UIButton的title和UIProgressView的progress都是淡蓝色。

注意是原生控件,如果你的控件是自定义的,比如UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];这样初始化来的,系统就没有为Button 的title颜色指定为默认的蓝色tintColor。

如果你要使用tintColor,需要子类化它,然后在- (void)tintColorDidChange里面写上[self setTitleColor:self.tintColor forState:UIControlStateNormal],就OK了。

所以我猜想,系统默认将控件的某些颜色指定为tintColor的情况下,是因为系统控件的源码里面有上面这句set...Color: self.tintColor 。

示意图:

              

这个tintColor属性是从iOS7才开始引入的,个人认为苹果的目的是为了界面风格的统一性,因为从7开始,iOS摒弃了原有的拟物化风格而转为了扁平化。

参考传送门:https://www.shinobicontrols.com/blog/ios7-day-by-day-day-6-tint-color

中文版:http://www.cocoachina.com/ios/20150703/12363.html?utm_medium=referral&utm_source=pulsenews



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3